package com.csw.shuanfa.utils;

import java.math.BigDecimal;

public class BigDecimalUtil {
    public static void main(String[] args) {

    }

    //加法
    public static double add(double d1, double d2) {
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        return b1.add(b2).doubleValue();
    }

    //减法
    public static double sub(double d1, double d2) {
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        return b1.subtract(b2).doubleValue();
    }

    //乘法
    public static double multiply(double d1, double d2) {
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));
        return b1.multiply(b2).doubleValue();
    }

    //除法
    public static double divide(double d1, double d2) {
        BigDecimal b1 = new BigDecimal(Double.toString(d1));
        BigDecimal b2 = new BigDecimal(Double.toString(d2));

        //除不尽时有多种重载方法，此处选择保留两位小数，四舍五入
        return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * @param d1 原类型
     * @param a  保留精度位数
     * @return
     */
    public static double doubleValue(double d1, int a) {
        BigDecimal b = new BigDecimal(d1);
        return b.setScale(a, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
}
/**
 * add(BigDecimal) BigDecimal对象中的值相加，然后返回这个对象。
 * subtract(BigDecimal) BigDecimal对象中的值相减，然后返回这个对象。
 * multiply(BigDecimal) BigDecimal对象中的值相乘，然后返回这个对象。
 * divide(BigDecimal) BigDecimal对象中的值相除，然后返回这个对象。
 * toString() 将BigDecimal对象的数值转换成字符串。
 * doubleValue() 将BigDecimal对象中的值以双精度数返回。
 * floatValue() 将BigDecimal对象中的值以单精度数返回。
 * longValue() 将BigDecimal对象中的值以长整数返回。
 * intValue() 将BigDecimal对象中的值以整数返回。
 * <p>
 * 作者：行者_shi
 * 链接：https://www.jianshu.com/p/c3c6cf0dce66
 * 来源：简书
 * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 */
